///*
// * To change this template, choose Tools | Templates
// * and open the template in the editor.
// */
//
//package javaapplication3;
//
//import java.util.HashMap;
//import java.util.Iterator;
//import javax.xml.transform.Source;
//import net.sf.refactorit.classmodel.Project;
//import net.sf.refactorit.common.exception.SystemException;
//import net.sf.refactorit.exception.ErrorCodes;
//import net.sf.refactorit.source.SourceParsingException;
//import net.sf.refactorit.test.TempFileCreator;
//import net.sf.refactorit.test.TestProject;
//import net.sf.refactorit.test.Utils.TempCompilationUnit;
//import net.sf.refactorit.ui.options.ClassPath;
//import net.sf.refactorit.ui.options.SourcePath;
//import net.sf.refactorit.utils.ClasspathUtil;
//import net.sf.refactorit.vfs.local.LocalClassPath;
//
///**
// *
// * @author Heliomar
// */
//public class ProjectUtils {
//
//    public static Project createTestRbProjectFromString(
//      TempCompilationUnit[] compilationUnits, boolean doLoad,
//      boolean ignoreParsingExceptions) {
//
//    Source projectFolder = TempFileCreator.getInstance().createRootDirectory();
//
//    HashMap foldersForPackages = new HashMap();
//
//    for (int i = 0; i < compilationUnits.length; i++) {
//      Source compilationUnitFolder;
//
//      if (compilationUnits[i].folderName != null
//          && (!"".equals(compilationUnits[i].folderName))) {
//        compilationUnitFolder = (Source) foldersForPackages.get(compilationUnits[i].folderName);
//
//        if (compilationUnitFolder == null) {
//          compilationUnitFolder = createPackageFolder(projectFolder, compilationUnits[i].folderName);
//          foldersForPackages.put(compilationUnits[i].folderName, compilationUnitFolder);
//        }
//      } else {
//        compilationUnitFolder = projectFolder;
//      }
//
//      if (!compilationUnits[i].virtual) {
//        if (compilationUnits[i].name == null) {
//          compilationUnits[i].name = "X" + i + ".java";
//        }
//
//        if (compilationUnits[i].name != null) {
//          writeNewTempFile(compilationUnitFolder, compilationUnits[i].name,
//              compilationUnits[i].contents);
//        }
//      }
//    }
//
//    SourcePath sourcePath = TempFileCreator.getInstance().createSourcePath(
//        projectFolder);
//    ClassPath classPath = new LocalClassPath(ClasspathUtil.getDefaultClasspath());
//
//    final Project result = createNewProjectFrom(new TestProject(
//        "TestProject_"+System.currentTimeMillis(), sourcePath, classPath, null));
//    if (doLoad) {
//      try {
//        result.getProjectLoader().build();
//      } catch (SourceParsingException e) {
//        for (Iterator i = (result.getProjectLoader().getErrorCollector()).getUserFriendlyErrors(); i.hasNext(); ) {
//          System.out.println("UserFriendly Error on project loading: " + i.next());
//        }
//
//        if (!ignoreParsingExceptions) {
//          throw new SystemException("TestError",e);
//        }
//      } catch (Exception e) {
//        throw new SystemException(ErrorCodes.INTERNAL_ERROR,e);
//      }
//    }
//    return result;
//  }
//
//}
